home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / asxsrc.arc / ASSUBR.C < prev    next >
C/C++ Source or Header  |  1991-06-10  |  952b  |  81 lines

  1. /* assubr.c */
  2.  
  3. /*
  4.  * (C) Copyright 1989
  5.  * All Rights Reserved
  6.  *
  7.  * Alan R. Baldwin
  8.  * 721 Berkeley St.
  9.  * Kent, Ohio  44240
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include <setjmp.h>
  14. #include "asm.h"
  15.  
  16. /*
  17.  * Note an error.
  18.  * If the error is already in the
  19.  * error buffer don't note it again.
  20.  * If the error is serious enough to
  21.  * stop the parse (a `q' error) just
  22.  * give up.
  23.  */
  24. VOID
  25. err(c)
  26. register c;
  27. {
  28.     register char *p;
  29.  
  30.     p = eb;
  31.     while (p < ep)
  32.         if (*p++ == c)
  33.             return;
  34.     if (p < &eb[NERR]) {
  35.         *p++ = c;
  36.         ep = p;
  37.     }
  38.     if (c == 'q')
  39.         longjmp(jump_env, -1);
  40. }
  41.  
  42. /*
  43.  * Send errors to the standard output.
  44.  */
  45. VOID
  46. diag()
  47. {
  48.     register char *p;
  49.  
  50.     p = eb;
  51.     while (p < ep)
  52.         printf("%c %04d\n", *p++, line);
  53. }
  54.  
  55. /*
  56.  * Note an 'r' error.
  57.  */
  58. VOID
  59. rerr()
  60. {
  61.     err('r');
  62. }
  63.  
  64. /*
  65.  * Note an 'a' error.
  66.  */
  67. VOID
  68. aerr()
  69. {
  70.     err('a');
  71. }
  72.  
  73. /*
  74.  * Note a 'q' error.
  75.  */
  76. VOID
  77. qerr()
  78. {
  79.     err('q');
  80. }
  81.